home *** CD-ROM | disk | FTP | other *** search
/ Erotic Games: Memory / Erotic Games: Memory.iso / mac / air_installers / AdobeAIR.exe / setup.swf / scripts / mx / controls / Button.as next >
Text File  |  2009-02-12  |  50KB  |  1,509 lines

  1. package mx.controls
  2. {
  3.    import flash.display.DisplayObject;
  4.    import flash.events.Event;
  5.    import flash.events.FocusEvent;
  6.    import flash.events.KeyboardEvent;
  7.    import flash.events.MouseEvent;
  8.    import flash.events.TimerEvent;
  9.    import flash.text.TextLineMetrics;
  10.    import flash.ui.Keyboard;
  11.    import flash.utils.Timer;
  12.    import mx.controls.dataGridClasses.DataGridListData;
  13.    import mx.controls.listClasses.BaseListData;
  14.    import mx.controls.listClasses.IDropInListItemRenderer;
  15.    import mx.controls.listClasses.IListItemRenderer;
  16.    import mx.core.EdgeMetrics;
  17.    import mx.core.FlexVersion;
  18.    import mx.core.IBorder;
  19.    import mx.core.IButton;
  20.    import mx.core.IDataRenderer;
  21.    import mx.core.IFlexAsset;
  22.    import mx.core.IFlexDisplayObject;
  23.    import mx.core.IFlexModuleFactory;
  24.    import mx.core.IFontContextComponent;
  25.    import mx.core.IInvalidating;
  26.    import mx.core.IProgrammaticSkin;
  27.    import mx.core.IRectangularBorder;
  28.    import mx.core.IStateClient;
  29.    import mx.core.IUIComponent;
  30.    import mx.core.IUITextField;
  31.    import mx.core.UIComponent;
  32.    import mx.core.UITextField;
  33.    import mx.core.mx_internal;
  34.    import mx.events.FlexEvent;
  35.    import mx.events.MoveEvent;
  36.    import mx.managers.IFocusManagerComponent;
  37.    import mx.styles.ISimpleStyleClient;
  38.    
  39.    use namespace mx_internal;
  40.    
  41.    public class Button extends UIComponent implements IDataRenderer, IDropInListItemRenderer, IFocusManagerComponent, IListItemRenderer, IFontContextComponent, IButton
  42.    {
  43.       
  44.       mx_internal static var createAccessibilityImplementation:Function;
  45.       
  46.       mx_internal static var TEXT_WIDTH_PADDING:Number = UITextField.TEXT_WIDTH_PADDING + 1;
  47.       
  48.       mx_internal static const VERSION:String = "3.0.0.0";
  49.        
  50.       
  51.       mx_internal var _emphasized:Boolean = false;
  52.       
  53.       mx_internal var extraSpacing:Number = 20.0;
  54.       
  55.       private var icons:Array;
  56.       
  57.       public var selectedField:String = null;
  58.       
  59.       private var labelChanged:Boolean = false;
  60.       
  61.       private var skinMeasuredWidth:Number;
  62.       
  63.       mx_internal var checkedDefaultSkin:Boolean = false;
  64.       
  65.       private var autoRepeatTimer:Timer;
  66.       
  67.       mx_internal var disabledIconName:String = "disabledIcon";
  68.       
  69.       mx_internal var disabledSkinName:String = "disabledSkin";
  70.       
  71.       mx_internal var checkedDefaultIcon:Boolean = false;
  72.       
  73.       public var stickyHighlighting:Boolean = false;
  74.       
  75.       private var enabledChanged:Boolean = false;
  76.       
  77.       mx_internal var selectedUpIconName:String = "selectedUpIcon";
  78.       
  79.       mx_internal var selectedUpSkinName:String = "selectedUpSkin";
  80.       
  81.       mx_internal var upIconName:String = "upIcon";
  82.       
  83.       mx_internal var upSkinName:String = "upSkin";
  84.       
  85.       mx_internal var centerContent:Boolean = true;
  86.       
  87.       mx_internal var buttonOffset:Number = 0;
  88.       
  89.       private var skinMeasuredHeight:Number;
  90.       
  91.       private var oldUnscaledWidth:Number;
  92.       
  93.       mx_internal var downIconName:String = "downIcon";
  94.       
  95.       mx_internal var _labelPlacement:String = "right";
  96.       
  97.       mx_internal var downSkinName:String = "downSkin";
  98.       
  99.       mx_internal var _toggle:Boolean = false;
  100.       
  101.       private var _phase:String = "up";
  102.       
  103.       private var toolTipSet:Boolean = false;
  104.       
  105.       private var _data:Object;
  106.       
  107.       mx_internal var currentIcon:IFlexDisplayObject;
  108.       
  109.       mx_internal var currentSkin:IFlexDisplayObject;
  110.       
  111.       mx_internal var overIconName:String = "overIcon";
  112.       
  113.       mx_internal var selectedDownIconName:String = "selectedDownIcon";
  114.       
  115.       mx_internal var overSkinName:String = "overSkin";
  116.       
  117.       mx_internal var iconName:String = "icon";
  118.       
  119.       mx_internal var skinName:String = "skin";
  120.       
  121.       mx_internal var selectedDownSkinName:String = "selectedDownSkin";
  122.       
  123.       private var skins:Array;
  124.       
  125.       private var selectedSet:Boolean;
  126.       
  127.       private var _autoRepeat:Boolean = false;
  128.       
  129.       private var styleChangedFlag:Boolean = true;
  130.       
  131.       mx_internal var selectedOverIconName:String = "selectedOverIcon";
  132.       
  133.       private var _listData:BaseListData;
  134.       
  135.       mx_internal var selectedOverSkinName:String = "selectedOverSkin";
  136.       
  137.       protected var textField:IUITextField;
  138.       
  139.       private var labelSet:Boolean;
  140.       
  141.       mx_internal var defaultIconUsesStates:Boolean = false;
  142.       
  143.       mx_internal var defaultSkinUsesStates:Boolean = false;
  144.       
  145.       mx_internal var toggleChanged:Boolean = false;
  146.       
  147.       private var emphasizedChanged:Boolean = false;
  148.       
  149.       private var _label:String = "";
  150.       
  151.       mx_internal var _selected:Boolean = false;
  152.       
  153.       mx_internal var selectedDisabledIconName:String = "selectedDisabledIcon";
  154.       
  155.       mx_internal var selectedDisabledSkinName:String = "selectedDisabledSkin";
  156.       
  157.       public function Button()
  158.       {
  159.          skins = [];
  160.          icons = [];
  161.          super();
  162.          mouseChildren = false;
  163.          addEventListener(MouseEvent.ROLL_OVER,rollOverHandler);
  164.          addEventListener(MouseEvent.ROLL_OUT,rollOutHandler);
  165.          addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler);
  166.          addEventListener(MouseEvent.MOUSE_UP,mouseUpHandler);
  167.          addEventListener(MouseEvent.CLICK,clickHandler);
  168.       }
  169.       
  170.       private function previousVersion_measure() : void
  171.       {
  172.          var bm:EdgeMetrics = null;
  173.          var lineMetrics:TextLineMetrics = null;
  174.          var paddingLeft:Number = NaN;
  175.          var paddingRight:Number = NaN;
  176.          var paddingTop:Number = NaN;
  177.          var paddingBottom:Number = NaN;
  178.          var horizontalGap:Number = NaN;
  179.          super.measure();
  180.          var textWidth:Number = 0;
  181.          var textHeight:Number = 0;
  182.          if(label)
  183.          {
  184.             lineMetrics = measureText(label);
  185.             textWidth = lineMetrics.width;
  186.             textHeight = lineMetrics.height;
  187.             paddingLeft = getStyle("paddingLeft");
  188.             paddingRight = getStyle("paddingRight");
  189.             paddingTop = getStyle("paddingTop");
  190.             paddingBottom = getStyle("paddingBottom");
  191.             textWidth += paddingLeft + paddingRight + getStyle("textIndent");
  192.             textHeight += paddingTop + paddingBottom;
  193.          }
  194.          try
  195.          {
  196.             bm = mx_internal::currentSkin["borderMetrics"];
  197.          }
  198.          catch(e:Error)
  199.          {
  200.             bm = new EdgeMetrics(3,3,3,3);
  201.          }
  202.          var tempCurrentIcon:IFlexDisplayObject = getCurrentIcon();
  203.          var iconWidth:Number = !!tempCurrentIcon ? Number(tempCurrentIcon.width) : Number(0);
  204.          var iconHeight:Number = !!tempCurrentIcon ? Number(tempCurrentIcon.height) : Number(0);
  205.          var w:Number = 0;
  206.          var h:Number = 0;
  207.          if(labelPlacement == ButtonLabelPlacement.LEFT || labelPlacement == ButtonLabelPlacement.RIGHT)
  208.          {
  209.             w = textWidth + iconWidth;
  210.             if(iconWidth != 0)
  211.             {
  212.                horizontalGap = getStyle("horizontalGap");
  213.                w += horizontalGap - 2;
  214.             }
  215.             h = Math.max(textHeight,iconHeight + 6);
  216.          }
  217.          else
  218.          {
  219.             w = Math.max(textWidth,iconWidth);
  220.             h = textHeight + iconHeight;
  221.             if(iconHeight != 0)
  222.             {
  223.                h += getStyle("verticalGap");
  224.             }
  225.          }
  226.          if(bm)
  227.          {
  228.             w += bm.left + bm.right;
  229.             h += bm.top + bm.bottom;
  230.          }
  231.          if(label && label.length != 0)
  232.          {
  233.             w += mx_internal::extraSpacing;
  234.          }
  235.          else
  236.          {
  237.             w += 6;
  238.          }
  239.          if(mx_internal::currentSkin && (isNaN(skinMeasuredWidth) || isNaN(skinMeasuredHeight)))
  240.          {
  241.             skinMeasuredWidth = mx_internal::currentSkin.measuredWidth;
  242.             skinMeasuredHeight = mx_internal::currentSkin.measuredHeight;
  243.          }
  244.          if(!isNaN(skinMeasuredWidth))
  245.          {
  246.             w = Math.max(skinMeasuredWidth,w);
  247.          }
  248.          if(!isNaN(skinMeasuredHeight))
  249.          {
  250.             h = Math.max(skinMeasuredHeight,h);
  251.          }
  252.          measuredMinWidth = measuredWidth = w;
  253.          measuredMinHeight = measuredHeight = h;
  254.       }
  255.       
  256.       [Bindable("labelChanged")]
  257.       public function get label() : String
  258.       {
  259.          return _label;
  260.       }
  261.       
  262.       mx_internal function getCurrentIconName() : String
  263.       {
  264.          var _loc1_:String = null;
  265.          if(!enabled)
  266.          {
  267.             _loc1_ = !!selected ? mx_internal::selectedDisabledIconName : mx_internal::disabledIconName;
  268.          }
  269.          else if(mx_internal::phase == ButtonPhase.UP)
  270.          {
  271.             _loc1_ = !!selected ? mx_internal::selectedUpIconName : mx_internal::upIconName;
  272.          }
  273.          else if(mx_internal::phase == ButtonPhase.OVER)
  274.          {
  275.             _loc1_ = !!selected ? mx_internal::selectedOverIconName : mx_internal::overIconName;
  276.          }
  277.          else if(mx_internal::phase == ButtonPhase.DOWN)
  278.          {
  279.             _loc1_ = !!selected ? mx_internal::selectedDownIconName : mx_internal::downIconName;
  280.          }
  281.          return _loc1_;
  282.       }
  283.       
  284.       protected function mouseUpHandler(param1:MouseEvent) : void
  285.       {
  286.          if(!enabled)
  287.          {
  288.             return;
  289.          }
  290.          phase = ButtonPhase.OVER;
  291.          buttonReleased();
  292.          if(!toggle)
  293.          {
  294.             param1.updateAfterEvent();
  295.          }
  296.       }
  297.       
  298.       override protected function adjustFocusRect(param1:DisplayObject = null) : void
  299.       {
  300.          super.adjustFocusRect(!mx_internal::currentSkin ? DisplayObject(mx_internal::currentIcon) : this);
  301.       }
  302.       
  303.       mx_internal function set phase(param1:String) : void
  304.       {
  305.          _phase = param1;
  306.          invalidateSize();
  307.          invalidateDisplayList();
  308.       }
  309.       
  310.       mx_internal function viewIconForPhase(param1:String) : IFlexDisplayObject
  311.       {
  312.          var _loc3_:IFlexDisplayObject = null;
  313.          var _loc4_:Boolean = false;
  314.          var _loc5_:String = null;
  315.          var _loc2_:Class = Class(getStyle(param1));
  316.          if(!_loc2_)
  317.          {
  318.             _loc2_ = Class(getStyle(mx_internal::iconName));
  319.             if(mx_internal::defaultIconUsesStates)
  320.             {
  321.                param1 = mx_internal::iconName;
  322.             }
  323.             if(!mx_internal::checkedDefaultIcon && _loc2_)
  324.             {
  325.                _loc3_ = IFlexDisplayObject(new _loc2_());
  326.                if(!(_loc3_ is IProgrammaticSkin) && _loc3_ is IStateClient)
  327.                {
  328.                   defaultIconUsesStates = true;
  329.                   param1 = mx_internal::iconName;
  330.                }
  331.                if(_loc3_)
  332.                {
  333.                   checkedDefaultIcon = true;
  334.                }
  335.             }
  336.          }
  337.          _loc3_ = IFlexDisplayObject(getChildByName(param1));
  338.          if(_loc3_ == null)
  339.          {
  340.             if(_loc2_ != null)
  341.             {
  342.                _loc3_ = IFlexDisplayObject(new _loc2_());
  343.                _loc3_.name = param1;
  344.                if(_loc3_ is ISimpleStyleClient)
  345.                {
  346.                   ISimpleStyleClient(_loc3_).styleName = this;
  347.                }
  348.                addChild(DisplayObject(_loc3_));
  349.                _loc4_ = false;
  350.                if(_loc3_ is IInvalidating)
  351.                {
  352.                   IInvalidating(_loc3_).validateNow();
  353.                   _loc4_ = true;
  354.                }
  355.                else if(_loc3_ is IProgrammaticSkin)
  356.                {
  357.                   IProgrammaticSkin(_loc3_).validateDisplayList();
  358.                   _loc4_ = true;
  359.                }
  360.                if(_loc3_ && _loc3_ is IUIComponent)
  361.                {
  362.                   IUIComponent(_loc3_).enabled = enabled;
  363.                }
  364.                if(_loc4_)
  365.                {
  366.                   _loc3_.setActualSize(_loc3_.measuredWidth,_loc3_.measuredHeight);
  367.                }
  368.                icons.push(_loc3_);
  369.             }
  370.          }
  371.          if(mx_internal::currentIcon != null)
  372.          {
  373.             mx_internal::currentIcon.visible = false;
  374.          }
  375.          currentIcon = _loc3_;
  376.          if(mx_internal::defaultIconUsesStates && mx_internal::currentIcon is IStateClient)
  377.          {
  378.             _loc5_ = "";
  379.             if(!enabled)
  380.             {
  381.                _loc5_ = !!selected ? "selectedDisabled" : "disabled";
  382.             }
  383.             else if(mx_internal::phase == ButtonPhase.UP)
  384.             {
  385.                _loc5_ = !!selected ? "selectedUp" : "up";
  386.             }
  387.             else if(mx_internal::phase == ButtonPhase.OVER)
  388.             {
  389.                _loc5_ = !!selected ? "selectedOver" : "over";
  390.             }
  391.             else if(mx_internal::phase == ButtonPhase.DOWN)
  392.             {
  393.                _loc5_ = !!selected ? "selectedDown" : "down";
  394.             }
  395.             IStateClient(mx_internal::currentIcon).currentState = _loc5_;
  396.          }
  397.          if(mx_internal::currentIcon != null)
  398.          {
  399.             mx_internal::currentIcon.visible = true;
  400.          }
  401.          return _loc3_;
  402.       }
  403.       
  404.       mx_internal function viewSkinForPhase(param1:String, param2:String) : void
  405.       {
  406.          var _loc4_:IFlexDisplayObject = null;
  407.          var _loc5_:Number = NaN;
  408.          var _loc6_:ISimpleStyleClient = null;
  409.          var _loc3_:Class = Class(getStyle(param1));
  410.          if(!_loc3_)
  411.          {
  412.             _loc3_ = Class(getStyle(mx_internal::skinName));
  413.             if(mx_internal::defaultSkinUsesStates)
  414.             {
  415.                param1 = mx_internal::skinName;
  416.             }
  417.             if(!mx_internal::checkedDefaultSkin && _loc3_)
  418.             {
  419.                if(!((_loc4_ = IFlexDisplayObject(new _loc3_())) is IProgrammaticSkin) && _loc4_ is IStateClient)
  420.                {
  421.                   defaultSkinUsesStates = true;
  422.                   param1 = mx_internal::skinName;
  423.                }
  424.                if(_loc4_)
  425.                {
  426.                   checkedDefaultSkin = true;
  427.                }
  428.             }
  429.          }
  430.          if(!(_loc4_ = IFlexDisplayObject(getChildByName(param1))))
  431.          {
  432.             if(_loc3_)
  433.             {
  434.                (_loc4_ = IFlexDisplayObject(new _loc3_())).name = param1;
  435.                if(_loc6_ = _loc4_ as ISimpleStyleClient)
  436.                {
  437.                   _loc6_.styleName = this;
  438.                }
  439.                addChild(DisplayObject(_loc4_));
  440.                _loc4_.setActualSize(unscaledWidth,unscaledHeight);
  441.                if(_loc4_ is IInvalidating && initialized)
  442.                {
  443.                   IInvalidating(_loc4_).validateNow();
  444.                }
  445.                else if(_loc4_ is IProgrammaticSkin && initialized)
  446.                {
  447.                   IProgrammaticSkin(_loc4_).validateDisplayList();
  448.                }
  449.                skins.push(_loc4_);
  450.             }
  451.          }
  452.          if(mx_internal::currentSkin)
  453.          {
  454.             mx_internal::currentSkin.visible = false;
  455.          }
  456.          currentSkin = _loc4_;
  457.          if(mx_internal::defaultSkinUsesStates && mx_internal::currentSkin is IStateClient)
  458.          {
  459.             IStateClient(mx_internal::currentSkin).currentState = param2;
  460.          }
  461.          if(mx_internal::currentSkin)
  462.          {
  463.             mx_internal::currentSkin.visible = true;
  464.          }
  465.          if(enabled)
  466.          {
  467.             if(mx_internal::phase == ButtonPhase.OVER)
  468.             {
  469.                _loc5_ = textField.getStyle("textRollOverColor");
  470.             }
  471.             else if(mx_internal::phase == ButtonPhase.DOWN)
  472.             {
  473.                _loc5_ = textField.getStyle("textSelectedColor");
  474.             }
  475.             else
  476.             {
  477.                _loc5_ = textField.getStyle("color");
  478.             }
  479.             textField.setColor(_loc5_);
  480.          }
  481.       }
  482.       
  483.       mx_internal function getTextField() : IUITextField
  484.       {
  485.          return textField;
  486.       }
  487.       
  488.       protected function rollOverHandler(param1:MouseEvent) : void
  489.       {
  490.          if(mx_internal::phase == ButtonPhase.UP)
  491.          {
  492.             if(param1.buttonDown)
  493.             {
  494.                return;
  495.             }
  496.             phase = ButtonPhase.OVER;
  497.             param1.updateAfterEvent();
  498.          }
  499.          else if(mx_internal::phase == ButtonPhase.OVER)
  500.          {
  501.             phase = ButtonPhase.DOWN;
  502.             param1.updateAfterEvent();
  503.             if(autoRepeatTimer)
  504.             {
  505.                autoRepeatTimer.start();
  506.             }
  507.          }
  508.       }
  509.       
  510.       override protected function createChildren() : void
  511.       {
  512.          super.createChildren();
  513.          if(!textField)
  514.          {
  515.             textField = IUITextField(createInFontContext(UITextField));
  516.             textField.styleName = this;
  517.             addChild(DisplayObject(textField));
  518.          }
  519.       }
  520.       
  521.       mx_internal function setSelected(param1:Boolean, param2:Boolean = false) : void
  522.       {
  523.          if(mx_internal::_selected != param1)
  524.          {
  525.             _selected = param1;
  526.             invalidateDisplayList();
  527.             if(FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
  528.             {
  529.                if(toggle)
  530.                {
  531.                   dispatchEvent(new Event(Event.CHANGE));
  532.                }
  533.             }
  534.             else if(toggle && !param2)
  535.             {
  536.                dispatchEvent(new Event(Event.CHANGE));
  537.             }
  538.             dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
  539.          }
  540.       }
  541.       
  542.       private function autoRepeatTimer_timerDelayHandler(param1:Event) : void
  543.       {
  544.          if(!enabled)
  545.          {
  546.             return;
  547.          }
  548.          dispatchEvent(new FlexEvent(FlexEvent.BUTTON_DOWN));
  549.          if(autoRepeat)
  550.          {
  551.             autoRepeatTimer.reset();
  552.             autoRepeatTimer.removeEventListener(TimerEvent.TIMER,autoRepeatTimer_timerDelayHandler);
  553.             autoRepeatTimer.delay = getStyle("repeatInterval");
  554.             autoRepeatTimer.addEventListener(TimerEvent.TIMER,autoRepeatTimer_timerHandler);
  555.             autoRepeatTimer.start();
  556.          }
  557.       }
  558.       
  559.       public function get autoRepeat() : Boolean
  560.       {
  561.          return _autoRepeat;
  562.       }
  563.       
  564.       public function set selected(param1:Boolean) : void
  565.       {
  566.          selectedSet = true;
  567.          setSelected(param1,true);
  568.       }
  569.       
  570.       override protected function focusOutHandler(param1:FocusEvent) : void
  571.       {
  572.          super.focusOutHandler(param1);
  573.          if(mx_internal::phase != ButtonPhase.UP)
  574.          {
  575.             phase = ButtonPhase.UP;
  576.          }
  577.       }
  578.       
  579.       [Bindable("labelPlacementChanged")]
  580.       public function get labelPlacement() : String
  581.       {
  582.          return mx_internal::_labelPlacement;
  583.       }
  584.       
  585.       public function set autoRepeat(param1:Boolean) : void
  586.       {
  587.          _autoRepeat = param1;
  588.          if(param1)
  589.          {
  590.             autoRepeatTimer = new Timer(1);
  591.          }
  592.          else
  593.          {
  594.             autoRepeatTimer = null;
  595.          }
  596.       }
  597.       
  598.       mx_internal function changeIcons() : void
  599.       {
  600.          var _loc1_:int = icons.length;
  601.          var _loc2_:int = 0;
  602.          while(_loc2_ < _loc1_)
  603.          {
  604.             removeChild(icons[_loc2_]);
  605.             _loc2_++;
  606.          }
  607.          icons = [];
  608.          checkedDefaultIcon = false;
  609.          defaultIconUsesStates = false;
  610.       }
  611.       
  612.       public function set data(param1:Object) : void
  613.       {
  614.          var _loc2_:* = undefined;
  615.          var _loc3_:* = undefined;
  616.          _data = param1;
  617.          if(_listData && _listData is DataGridListData)
  618.          {
  619.             _loc2_ = _data[DataGridListData(_listData).dataField];
  620.             _loc3_ = "";
  621.          }
  622.          else if(_listData)
  623.          {
  624.             if(selectedField)
  625.             {
  626.                _loc2_ = _data[selectedField];
  627.             }
  628.             _loc3_ = _listData.label;
  629.          }
  630.          else
  631.          {
  632.             _loc2_ = _data;
  633.          }
  634.          if(_loc2_ !== undefined && !selectedSet)
  635.          {
  636.             selected = _loc2_ as Boolean;
  637.             selectedSet = false;
  638.          }
  639.          if(_loc3_ !== undefined && !labelSet)
  640.          {
  641.             label = _loc3_;
  642.             labelSet = false;
  643.          }
  644.          dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
  645.       }
  646.       
  647.       mx_internal function getCurrentIcon() : IFlexDisplayObject
  648.       {
  649.          var _loc1_:String = getCurrentIconName();
  650.          if(!_loc1_)
  651.          {
  652.             return null;
  653.          }
  654.          return viewIconForPhase(_loc1_);
  655.       }
  656.       
  657.       public function get fontContext() : IFlexModuleFactory
  658.       {
  659.          return moduleFactory;
  660.       }
  661.       
  662.       public function get emphasized() : Boolean
  663.       {
  664.          return mx_internal::_emphasized;
  665.       }
  666.       
  667.       [Bindable("dataChange")]
  668.       public function get listData() : BaseListData
  669.       {
  670.          return _listData;
  671.       }
  672.       
  673.       mx_internal function layoutContents(param1:Number, param2:Number, param3:Boolean) : void
  674.       {
  675.          var _loc20_:TextLineMetrics = null;
  676.          var _loc28_:MoveEvent = null;
  677.          if(FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
  678.          {
  679.             previousVersion_layoutContents(param1,param2,param3);
  680.             return;
  681.          }
  682.          var _loc4_:Number = 0;
  683.          var _loc5_:Number = 0;
  684.          var _loc6_:Number = 0;
  685.          var _loc7_:Number = 0;
  686.          var _loc8_:Number = 0;
  687.          var _loc9_:Number = 0;
  688.          var _loc10_:Number = 0;
  689.          var _loc11_:Number = 0;
  690.          var _loc12_:Number = 0;
  691.          var _loc13_:Number = 0;
  692.          var _loc14_:Number = getStyle("paddingLeft");
  693.          var _loc15_:Number = getStyle("paddingRight");
  694.          var _loc16_:Number = getStyle("paddingTop");
  695.          var _loc17_:Number = getStyle("paddingBottom");
  696.          var _loc18_:Number = 0;
  697.          var _loc19_:Number = 0;
  698.          if(label)
  699.          {
  700.             _loc18_ = (_loc20_ = measureText(label)).width + mx_internal::TEXT_WIDTH_PADDING;
  701.             _loc19_ = _loc20_.height + UITextField.TEXT_HEIGHT_PADDING;
  702.          }
  703.          else
  704.          {
  705.             _loc19_ = (_loc20_ = measureText("Wj")).height + UITextField.TEXT_HEIGHT_PADDING;
  706.          }
  707.          var _loc21_:Number = !!param3 ? Number(mx_internal::buttonOffset) : Number(0);
  708.          var _loc22_:String = getStyle("textAlign");
  709.          var _loc23_:Number = param1;
  710.          var _loc24_:Number = param2;
  711.          var _loc25_:EdgeMetrics;
  712.          if(_loc25_ = mx_internal::currentSkin && mx_internal::currentSkin is IBorder && !(mx_internal::currentSkin is IFlexAsset) ? IBorder(mx_internal::currentSkin).borderMetrics : null)
  713.          {
  714.             _loc23_ -= _loc25_.left + _loc25_.right;
  715.             _loc24_ -= _loc25_.top + _loc25_.bottom;
  716.          }
  717.          if(mx_internal::currentIcon)
  718.          {
  719.             _loc8_ = mx_internal::currentIcon.width;
  720.             _loc9_ = mx_internal::currentIcon.height;
  721.          }
  722.          if(labelPlacement == ButtonLabelPlacement.LEFT || labelPlacement == ButtonLabelPlacement.RIGHT)
  723.          {
  724.             _loc12_ = getStyle("horizontalGap");
  725.             if(_loc8_ == 0 || _loc18_ == 0)
  726.             {
  727.                _loc12_ = 0;
  728.             }
  729.             if(_loc18_ > 0)
  730.             {
  731.                textField.width = _loc4_ = Math.max(Math.min(_loc23_ - _loc8_ - _loc12_ - _loc14_ - _loc15_,_loc18_),0);
  732.             }
  733.             else
  734.             {
  735.                textField.width = _loc4_ = 0;
  736.             }
  737.             textField.height = _loc5_ = Math.min(_loc24_,_loc19_);
  738.             if(_loc22_ == "left")
  739.             {
  740.                _loc6_ += _loc14_;
  741.             }
  742.             else if(_loc22_ == "right")
  743.             {
  744.                _loc6_ += _loc23_ - _loc4_ - _loc8_ - _loc12_ - _loc15_;
  745.             }
  746.             else
  747.             {
  748.                _loc6_ += (_loc23_ - _loc4_ - _loc8_ - _loc12_ - _loc14_ - _loc15_) / 2 + _loc14_;
  749.             }
  750.             if(labelPlacement == ButtonLabelPlacement.RIGHT)
  751.             {
  752.                _loc10_ = (_loc6_ += _loc8_ + _loc12_) - (_loc8_ + _loc12_);
  753.             }
  754.             else
  755.             {
  756.                _loc10_ = _loc6_ + _loc4_ + _loc12_;
  757.             }
  758.             _loc11_ = (_loc24_ - _loc9_ - _loc16_ - _loc17_) / 2 + _loc16_;
  759.             _loc7_ = (_loc24_ - _loc5_ - _loc16_ - _loc17_) / 2 + _loc16_;
  760.          }
  761.          else
  762.          {
  763.             _loc13_ = getStyle("verticalGap");
  764.             if(_loc9_ == 0 || label == "")
  765.             {
  766.                _loc13_ = 0;
  767.             }
  768.             if(_loc18_ > 0)
  769.             {
  770.                textField.width = _loc4_ = Math.max(_loc23_ - _loc14_ - _loc15_,0);
  771.                textField.height = _loc5_ = Math.min(_loc24_ - _loc9_ - _loc16_ - _loc17_ - _loc13_,_loc19_);
  772.             }
  773.             else
  774.             {
  775.                textField.width = _loc4_ = 0;
  776.                textField.height = _loc5_ = 0;
  777.             }
  778.             _loc6_ = _loc14_;
  779.             if(_loc22_ == "left")
  780.             {
  781.                _loc10_ += _loc14_;
  782.             }
  783.             else if(_loc22_ == "right")
  784.             {
  785.                _loc10_ += Math.max(_loc23_ - _loc8_ - _loc15_,_loc14_);
  786.             }
  787.             else
  788.             {
  789.                _loc10_ += (_loc23_ - _loc8_ - _loc14_ - _loc15_) / 2 + _loc14_;
  790.             }
  791.             if(labelPlacement == ButtonLabelPlacement.TOP)
  792.             {
  793.                _loc7_ += (_loc24_ - _loc5_ - _loc9_ - _loc16_ - _loc17_ - _loc13_) / 2 + _loc16_;
  794.                _loc11_ += _loc7_ + _loc5_ + _loc13_;
  795.             }
  796.             else
  797.             {
  798.                _loc11_ += (_loc24_ - _loc5_ - _loc9_ - _loc16_ - _loc17_ - _loc13_) / 2 + _loc16_;
  799.                _loc7_ += _loc11_ + _loc9_ + _loc13_;
  800.             }
  801.          }
  802.          var _loc26_:Number = _loc21_;
  803.          var _loc27_:Number = _loc21_;
  804.          if(_loc25_)
  805.          {
  806.             _loc26_ += _loc25_.left;
  807.             _loc27_ += _loc25_.top;
  808.          }
  809.          textField.x = Math.round(_loc6_ + _loc26_);
  810.          textField.y = Math.round(_loc7_ + _loc27_);
  811.          if(mx_internal::currentIcon)
  812.          {
  813.             _loc10_ += _loc26_;
  814.             _loc11_ += _loc27_;
  815.             (_loc28_ = new MoveEvent(MoveEvent.MOVE)).oldX = mx_internal::currentIcon.x;
  816.             _loc28_.oldY = mx_internal::currentIcon.y;
  817.             mx_internal::currentIcon.x = Math.round(_loc10_);
  818.             mx_internal::currentIcon.y = Math.round(_loc11_);
  819.             mx_internal::currentIcon.dispatchEvent(_loc28_);
  820.          }
  821.          if(mx_internal::currentSkin)
  822.          {
  823.             setChildIndex(DisplayObject(mx_internal::currentSkin),numChildren - 1);
  824.          }
  825.          if(mx_internal::currentIcon)
  826.          {
  827.             setChildIndex(DisplayObject(mx_internal::currentIcon),numChildren - 1);
  828.          }
  829.          if(textField)
  830.          {
  831.             setChildIndex(DisplayObject(textField),numChildren - 1);
  832.          }
  833.       }
  834.       
  835.       protected function mouseDownHandler(param1:MouseEvent) : void
  836.       {
  837.          if(!enabled)
  838.          {
  839.             return;
  840.          }
  841.          systemManager.addEventListener(MouseEvent.MOUSE_UP,systemManager_mouseUpHandler,true);
  842.          systemManager.stage.addEventListener(Event.MOUSE_LEAVE,stage_mouseLeaveHandler);
  843.          buttonPressed();
  844.          param1.updateAfterEvent();
  845.       }
  846.       
  847.       override protected function keyDownHandler(param1:KeyboardEvent) : void
  848.       {
  849.          if(!enabled)
  850.          {
  851.             return;
  852.          }
  853.          if(param1.keyCode == Keyboard.SPACE)
  854.          {
  855.             buttonPressed();
  856.          }
  857.       }
  858.       
  859.       protected function rollOutHandler(param1:MouseEvent) : void
  860.       {
  861.          if(mx_internal::phase == ButtonPhase.OVER)
  862.          {
  863.             phase = ButtonPhase.UP;
  864.             param1.updateAfterEvent();
  865.          }
  866.          else if(mx_internal::phase == ButtonPhase.DOWN && !stickyHighlighting)
  867.          {
  868.             phase = ButtonPhase.OVER;
  869.             param1.updateAfterEvent();
  870.             if(autoRepeatTimer)
  871.             {
  872.                autoRepeatTimer.stop();
  873.             }
  874.          }
  875.       }
  876.       
  877.       mx_internal function get phase() : String
  878.       {
  879.          return _phase;
  880.       }
  881.       
  882.       override public function set enabled(param1:Boolean) : void
  883.       {
  884.          if(super.enabled == param1)
  885.          {
  886.             return;
  887.          }
  888.          super.enabled = param1;
  889.          enabledChanged = true;
  890.          invalidateProperties();
  891.          invalidateDisplayList();
  892.       }
  893.       
  894.       override protected function measure() : void
  895.       {
  896.          var _loc9_:TextLineMetrics = null;
  897.          if(FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
  898.          {
  899.             previousVersion_measure();
  900.             return;
  901.          }
  902.          super.measure();
  903.          var _loc1_:Number = 0;
  904.          var _loc2_:Number = 0;
  905.          if(label)
  906.          {
  907.             _loc1_ = (_loc9_ = measureText(label)).width + mx_internal::TEXT_WIDTH_PADDING;
  908.             _loc2_ = _loc9_.height + UITextField.TEXT_HEIGHT_PADDING;
  909.          }
  910.          var _loc3_:IFlexDisplayObject = getCurrentIcon();
  911.          var _loc4_:Number = !!_loc3_ ? Number(_loc3_.width) : Number(0);
  912.          var _loc5_:Number = !!_loc3_ ? Number(_loc3_.height) : Number(0);
  913.          var _loc6_:Number = 0;
  914.          var _loc7_:Number = 0;
  915.          if(labelPlacement == ButtonLabelPlacement.LEFT || labelPlacement == ButtonLabelPlacement.RIGHT)
  916.          {
  917.             _loc6_ = _loc1_ + _loc4_;
  918.             if(_loc1_ && _loc4_)
  919.             {
  920.                _loc6_ += getStyle("horizontalGap");
  921.             }
  922.             _loc7_ = Math.max(_loc2_,_loc5_);
  923.          }
  924.          else
  925.          {
  926.             _loc6_ = Math.max(_loc1_,_loc4_);
  927.             _loc7_ = _loc2_ + _loc5_;
  928.             if(_loc2_ && _loc5_)
  929.             {
  930.                _loc7_ += getStyle("verticalGap");
  931.             }
  932.          }
  933.          if(_loc1_ || _loc4_)
  934.          {
  935.             _loc6_ += getStyle("paddingLeft") + getStyle("paddingRight");
  936.             _loc7_ += getStyle("paddingTop") + getStyle("paddingBottom");
  937.          }
  938.          var _loc8_:EdgeMetrics;
  939.          if(_loc8_ = mx_internal::currentSkin && mx_internal::currentSkin is IBorder && !(mx_internal::currentSkin is IFlexAsset) ? IBorder(mx_internal::currentSkin).borderMetrics : null)
  940.          {
  941.             _loc6_ += _loc8_.left + _loc8_.right;
  942.             _loc7_ += _loc8_.top + _loc8_.bottom;
  943.          }
  944.          if(mx_internal::currentSkin && (isNaN(skinMeasuredWidth) || isNaN(skinMeasuredHeight)))
  945.          {
  946.             skinMeasuredWidth = mx_internal::currentSkin.measuredWidth;
  947.             skinMeasuredHeight = mx_internal::currentSkin.measuredHeight;
  948.          }
  949.          if(!isNaN(skinMeasuredWidth))
  950.          {
  951.             _loc6_ = Math.max(skinMeasuredWidth,_loc6_);
  952.          }
  953.          if(!isNaN(skinMeasuredHeight))
  954.          {
  955.             _loc7_ = Math.max(skinMeasuredHeight,_loc7_);
  956.          }
  957.          measuredMinWidth = measuredWidth = _loc6_;
  958.          measuredMinHeight = measuredHeight = _loc7_;
  959.       }
  960.       
  961.       [Bindable("toggleChanged")]
  962.       public function get toggle() : Boolean
  963.       {
  964.          return mx_internal::_toggle;
  965.       }
  966.       
  967.       mx_internal function buttonReleased() : void
  968.       {
  969.          systemManager.removeEventListener(MouseEvent.MOUSE_UP,systemManager_mouseUpHandler,true);
  970.          systemManager.stage.removeEventListener(Event.MOUSE_LEAVE,stage_mouseLeaveHandler);
  971.          if(autoRepeatTimer)
  972.          {
  973.             autoRepeatTimer.removeEventListener(TimerEvent.TIMER,autoRepeatTimer_timerDelayHandler);
  974.             autoRepeatTimer.removeEventListener(TimerEvent.TIMER,autoRepeatTimer_timerHandler);
  975.             autoRepeatTimer.reset();
  976.          }
  977.       }
  978.       
  979.       mx_internal function buttonPressed() : void
  980.       {
  981.          phase = ButtonPhase.DOWN;
  982.          dispatchEvent(new FlexEvent(FlexEvent.BUTTON_DOWN));
  983.          if(autoRepeat)
  984.          {
  985.             autoRepeatTimer.delay = getStyle("repeatDelay");
  986.             autoRepeatTimer.addEventListener(TimerEvent.TIMER,autoRepeatTimer_timerDelayHandler);
  987.             autoRepeatTimer.start();
  988.          }
  989.       }
  990.       
  991.       override protected function keyUpHandler(param1:KeyboardEvent) : void
  992.       {
  993.          if(!enabled)
  994.          {
  995.             return;
  996.          }
  997.          if(param1.keyCode == Keyboard.SPACE)
  998.          {
  999.             buttonReleased();
  1000.             if(mx_internal::phase == ButtonPhase.DOWN)
  1001.             {
  1002.                dispatchEvent(new MouseEvent(MouseEvent.CLICK));
  1003.             }
  1004.             phase = ButtonPhase.UP;
  1005.          }
  1006.       }
  1007.       
  1008.       [Bindable("valueCommit")]
  1009.       [Bindable("click")]
  1010.       public function get selected() : Boolean
  1011.       {
  1012.          return mx_internal::_selected;
  1013.       }
  1014.       
  1015.       public function set labelPlacement(param1:String) : void
  1016.       {
  1017.          _labelPlacement = param1;
  1018.          invalidateSize();
  1019.          invalidateDisplayList();
  1020.          dispatchEvent(new Event("labelPlacementChanged"));
  1021.       }
  1022.       
  1023.       protected function clickHandler(param1:MouseEvent) : void
  1024.       {
  1025.          if(!enabled)
  1026.          {
  1027.             param1.stopImmediatePropagation();
  1028.             return;
  1029.          }
  1030.          if(toggle)
  1031.          {
  1032.             setSelected(!selected);
  1033.             param1.updateAfterEvent();
  1034.          }
  1035.       }
  1036.       
  1037.       override protected function initializeAccessibility() : void
  1038.       {
  1039.          if(Button.createAccessibilityImplementation != null)
  1040.          {
  1041.             Button.createAccessibilityImplementation(this);
  1042.          }
  1043.       }
  1044.       
  1045.       public function set toggle(param1:Boolean) : void
  1046.       {
  1047.          _toggle = param1;
  1048.          toggleChanged = true;
  1049.          invalidateProperties();
  1050.          invalidateDisplayList();
  1051.          dispatchEvent(new Event("toggleChanged"));
  1052.       }
  1053.       
  1054.       override public function get baselinePosition() : Number
  1055.       {
  1056.          var _loc1_:String = null;
  1057.          var _loc2_:TextLineMetrics = null;
  1058.          if(FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
  1059.          {
  1060.             _loc1_ = label;
  1061.             if(!_loc1_)
  1062.             {
  1063.                _loc1_ = "Wj";
  1064.             }
  1065.             validateNow();
  1066.             if(!label && (labelPlacement == ButtonLabelPlacement.TOP || labelPlacement == ButtonLabelPlacement.BOTTOM))
  1067.             {
  1068.                _loc2_ = measureText(_loc1_);
  1069.                return (measuredHeight - _loc2_.height) / 2 + _loc2_.ascent;
  1070.             }
  1071.             return textField.y + measureText(_loc1_).ascent;
  1072.          }
  1073.          if(!validateBaselinePosition())
  1074.          {
  1075.             return NaN;
  1076.          }
  1077.          return textField.y + textField.baselinePosition;
  1078.       }
  1079.       
  1080.       [Bindable("dataChange")]
  1081.       public function get data() : Object
  1082.       {
  1083.          return _data;
  1084.       }
  1085.       
  1086.       public function set fontContext(param1:IFlexModuleFactory) : void
  1087.       {
  1088.          this.moduleFactory = param1;
  1089.       }
  1090.       
  1091.       mx_internal function viewSkin() : void
  1092.       {
  1093.          var _loc1_:String = null;
  1094.          var _loc2_:String = null;
  1095.          if(!enabled)
  1096.          {
  1097.             _loc1_ = !!selected ? mx_internal::selectedDisabledSkinName : mx_internal::disabledSkinName;
  1098.             _loc2_ = !!selected ? "selectedDisabled" : "disabled";
  1099.          }
  1100.          else if(mx_internal::phase == ButtonPhase.UP)
  1101.          {
  1102.             _loc1_ = !!selected ? mx_internal::selectedUpSkinName : mx_internal::upSkinName;
  1103.             _loc2_ = !!selected ? "selectedUp" : "up";
  1104.          }
  1105.          else if(mx_internal::phase == ButtonPhase.OVER)
  1106.          {
  1107.             _loc1_ = !!selected ? mx_internal::selectedOverSkinName : mx_internal::overSkinName;
  1108.             _loc2_ = !!selected ? "selectedOver" : "over";
  1109.          }
  1110.          else if(mx_internal::phase == ButtonPhase.DOWN)
  1111.          {
  1112.             _loc1_ = !!selected ? mx_internal::selectedDownSkinName : mx_internal::downSkinName;
  1113.             _loc2_ = !!selected ? "selectedDown" : "down";
  1114.          }
  1115.          viewSkinForPhase(_loc1_,_loc2_);
  1116.       }
  1117.       
  1118.       override public function styleChanged(param1:String) : void
  1119.       {
  1120.          styleChangedFlag = true;
  1121.          super.styleChanged(param1);
  1122.          if(!param1 || param1 == "styleName")
  1123.          {
  1124.             changeSkins();
  1125.             changeIcons();
  1126.             if(initialized)
  1127.             {
  1128.                viewSkin();
  1129.                viewIcon();
  1130.             }
  1131.          }
  1132.          else if(param1.toLowerCase().indexOf("skin") != -1)
  1133.          {
  1134.             changeSkins();
  1135.          }
  1136.          else if(param1.toLowerCase().indexOf("icon") != -1)
  1137.          {
  1138.             changeIcons();
  1139.             invalidateSize();
  1140.          }
  1141.       }
  1142.       
  1143.       public function set emphasized(param1:Boolean) : void
  1144.       {
  1145.          _emphasized = param1;
  1146.          emphasizedChanged = true;
  1147.          invalidateDisplayList();
  1148.       }
  1149.       
  1150.       mx_internal function viewIcon() : void
  1151.       {
  1152.          var _loc1_:String = getCurrentIconName();
  1153.          viewIconForPhase(_loc1_);
  1154.       }
  1155.       
  1156.       override public function set toolTip(param1:String) : void
  1157.       {
  1158.          super.toolTip = param1;
  1159.          if(param1)
  1160.          {
  1161.             toolTipSet = true;
  1162.          }
  1163.          else
  1164.          {
  1165.             toolTipSet = false;
  1166.             invalidateDisplayList();
  1167.          }
  1168.       }
  1169.       
  1170.       override protected function commitProperties() : void
  1171.       {
  1172.          super.commitProperties();
  1173.          if(hasFontContextChanged() && textField != null)
  1174.          {
  1175.             removeChild(DisplayObject(textField));
  1176.             textField = null;
  1177.          }
  1178.          if(!textField)
  1179.          {
  1180.             textField = IUITextField(createInFontContext(UITextField));
  1181.             textField.styleName = this;
  1182.             addChild(DisplayObject(textField));
  1183.             enabledChanged = true;
  1184.             toggleChanged = true;
  1185.          }
  1186.          if(!initialized)
  1187.          {
  1188.             viewSkin();
  1189.             viewIcon();
  1190.          }
  1191.          if(enabledChanged)
  1192.          {
  1193.             textField.enabled = enabled;
  1194.             if(mx_internal::currentIcon && mx_internal::currentIcon is IUIComponent)
  1195.             {
  1196.                IUIComponent(mx_internal::currentIcon).enabled = enabled;
  1197.             }
  1198.             enabledChanged = false;
  1199.          }
  1200.          if(mx_internal::toggleChanged)
  1201.          {
  1202.             if(!toggle)
  1203.             {
  1204.                selected = false;
  1205.             }
  1206.             toggleChanged = false;
  1207.          }
  1208.       }
  1209.       
  1210.       mx_internal function changeSkins() : void
  1211.       {
  1212.          var _loc1_:int = skins.length;
  1213.          var _loc2_:int = 0;
  1214.          while(_loc2_ < _loc1_)
  1215.          {
  1216.             removeChild(skins[_loc2_]);
  1217.             _loc2_++;
  1218.          }
  1219.          skins = [];
  1220.          skinMeasuredWidth = NaN;
  1221.          skinMeasuredHeight = NaN;
  1222.          checkedDefaultSkin = false;
  1223.          defaultSkinUsesStates = false;
  1224.          if(initialized && FlexVersion.compatibilityVersion >= FlexVersion.VERSION_3_0)
  1225.          {
  1226.             viewSkin();
  1227.             invalidateSize();
  1228.          }
  1229.       }
  1230.       
  1231.       private function autoRepeatTimer_timerHandler(param1:Event) : void
  1232.       {
  1233.          if(!enabled)
  1234.          {
  1235.             return;
  1236.          }
  1237.          dispatchEvent(new FlexEvent(FlexEvent.BUTTON_DOWN));
  1238.       }
  1239.       
  1240.       private function previousVersion_layoutContents(param1:Number, param2:Number, param3:Boolean) : void
  1241.       {
  1242.          var _loc20_:TextLineMetrics = null;
  1243.          var _loc28_:Number = NaN;
  1244.          var _loc29_:MoveEvent = null;
  1245.          var _loc4_:Number = 0;
  1246.          var _loc5_:Number = 0;
  1247.          var _loc6_:Number = 0;
  1248.          var _loc7_:Number = 0;
  1249.          var _loc8_:Number = 0;
  1250.          var _loc9_:Number = 0;
  1251.          var _loc10_:Number = 0;
  1252.          var _loc11_:Number = 0;
  1253.          var _loc12_:Number = 2;
  1254.          var _loc13_:Number = 2;
  1255.          var _loc14_:Number = getStyle("paddingLeft");
  1256.          var _loc15_:Number = getStyle("paddingRight");
  1257.          var _loc16_:Number = getStyle("paddingTop");
  1258.          var _loc17_:Number = getStyle("paddingBottom");
  1259.          var _loc18_:Number = 0;
  1260.          var _loc19_:Number = 0;
  1261.          if(label)
  1262.          {
  1263.             if((_loc20_ = measureText(label)).width > 0)
  1264.             {
  1265.                _loc18_ = _loc14_ + _loc15_ + getStyle("textIndent") + _loc20_.width;
  1266.             }
  1267.             _loc19_ = _loc20_.height;
  1268.          }
  1269.          else
  1270.          {
  1271.             _loc19_ = (_loc20_ = measureText("Wj")).height;
  1272.          }
  1273.          var _loc21_:Number = !!param3 ? Number(mx_internal::buttonOffset) : Number(0);
  1274.          var _loc22_:String = getStyle("textAlign");
  1275.          var _loc23_:EdgeMetrics = mx_internal::currentSkin && mx_internal::currentSkin is IRectangularBorder ? IRectangularBorder(mx_internal::currentSkin).borderMetrics : null;
  1276.          var _loc24_:Number = param1;
  1277.          var _loc25_:Number = param2 - _loc16_ - _loc17_;
  1278.          if(_loc23_)
  1279.          {
  1280.             _loc24_ -= _loc23_.left + _loc23_.right;
  1281.             _loc25_ -= _loc23_.top + _loc23_.bottom;
  1282.          }
  1283.          if(mx_internal::currentIcon)
  1284.          {
  1285.             _loc8_ = mx_internal::currentIcon.width;
  1286.             _loc9_ = mx_internal::currentIcon.height;
  1287.          }
  1288.          if(labelPlacement == ButtonLabelPlacement.LEFT || labelPlacement == ButtonLabelPlacement.RIGHT)
  1289.          {
  1290.             _loc12_ = getStyle("horizontalGap");
  1291.             if(_loc8_ == 0 || _loc18_ == 0)
  1292.             {
  1293.                _loc12_ = 0;
  1294.             }
  1295.             if(_loc18_ > 0)
  1296.             {
  1297.                textField.width = _loc4_ = Math.max(_loc24_ - _loc8_ - _loc12_ - _loc14_ - _loc15_,0);
  1298.             }
  1299.             else
  1300.             {
  1301.                textField.width = _loc4_ = 0;
  1302.             }
  1303.             textField.height = _loc5_ = Math.min(_loc25_ + 2,_loc19_ + UITextField.TEXT_HEIGHT_PADDING);
  1304.             if(labelPlacement == ButtonLabelPlacement.RIGHT)
  1305.             {
  1306.                _loc6_ = _loc8_ + _loc12_;
  1307.                if(mx_internal::centerContent)
  1308.                {
  1309.                   if(_loc22_ == "left")
  1310.                   {
  1311.                      _loc6_ += _loc14_;
  1312.                   }
  1313.                   else if(_loc22_ == "right")
  1314.                   {
  1315.                      _loc6_ += _loc24_ - _loc4_ - _loc8_ - _loc12_ - _loc14_;
  1316.                   }
  1317.                   else
  1318.                   {
  1319.                      _loc28_ = (_loc24_ - _loc4_ - _loc8_ - _loc12_) / 2;
  1320.                      _loc6_ += Math.max(_loc28_,_loc14_);
  1321.                   }
  1322.                }
  1323.                _loc10_ = _loc6_ - (_loc8_ + _loc12_);
  1324.                if(!mx_internal::centerContent)
  1325.                {
  1326.                   _loc6_ += _loc14_;
  1327.                }
  1328.             }
  1329.             else
  1330.             {
  1331.                _loc6_ = _loc24_ - _loc4_ - _loc8_ - _loc12_ - _loc15_;
  1332.                if(mx_internal::centerContent)
  1333.                {
  1334.                   if(_loc22_ == "left")
  1335.                   {
  1336.                      _loc6_ = 2;
  1337.                   }
  1338.                   else if(_loc22_ == "right")
  1339.                   {
  1340.                      _loc6_--;
  1341.                   }
  1342.                   else if(_loc6_ > 0)
  1343.                   {
  1344.                      _loc6_ /= 2;
  1345.                   }
  1346.                }
  1347.                _loc10_ = _loc6_ + _loc4_ + _loc12_;
  1348.             }
  1349.             _loc11_ = _loc7_ = 0;
  1350.             if(mx_internal::centerContent)
  1351.             {
  1352.                _loc11_ = Math.round((_loc25_ - _loc9_) / 2) + _loc16_;
  1353.                _loc7_ = Math.round((_loc25_ - _loc5_) / 2) + _loc16_;
  1354.             }
  1355.             else
  1356.             {
  1357.                _loc7_ += Math.max(0,(_loc25_ - _loc5_) / 2) + _loc16_;
  1358.                _loc11_ += Math.max(0,(_loc25_ - _loc9_) / 2 - 1) + _loc16_;
  1359.             }
  1360.          }
  1361.          else
  1362.          {
  1363.             _loc13_ = getStyle("verticalGap");
  1364.             if(_loc9_ == 0 || _loc19_ == 0)
  1365.             {
  1366.                _loc13_ = 0;
  1367.             }
  1368.             if(_loc18_ > 0)
  1369.             {
  1370.                textField.width = _loc4_ = Math.min(_loc24_,_loc18_ + UITextField.TEXT_WIDTH_PADDING);
  1371.                textField.height = _loc5_ = Math.min(_loc25_ - _loc9_ + 1,_loc19_ + 5);
  1372.             }
  1373.             else
  1374.             {
  1375.                textField.width = _loc4_ = 0;
  1376.                textField.height = _loc5_ = 0;
  1377.             }
  1378.             _loc6_ = (_loc24_ - _loc4_) / 2;
  1379.             _loc10_ = (_loc24_ - _loc8_) / 2;
  1380.             if(labelPlacement == ButtonLabelPlacement.TOP)
  1381.             {
  1382.                _loc7_ = _loc25_ - _loc5_ - _loc9_ - _loc13_;
  1383.                if(mx_internal::centerContent && _loc7_ > 0)
  1384.                {
  1385.                   _loc7_ /= 2;
  1386.                }
  1387.                _loc11_ = (_loc7_ += _loc16_) + _loc5_ + _loc13_ - 3;
  1388.             }
  1389.             else
  1390.             {
  1391.                _loc7_ = _loc9_ + _loc13_ + _loc16_;
  1392.                if(mx_internal::centerContent)
  1393.                {
  1394.                   _loc7_ += (_loc25_ - _loc5_ - _loc9_ - _loc13_) / 2 + 1;
  1395.                }
  1396.                _loc11_ = _loc7_ - _loc9_ - _loc13_ + 3;
  1397.             }
  1398.          }
  1399.          var _loc26_:Number = _loc21_;
  1400.          var _loc27_:Number = _loc21_;
  1401.          if(_loc23_)
  1402.          {
  1403.             _loc26_ += _loc23_.left;
  1404.             _loc27_ += _loc23_.top;
  1405.          }
  1406.          textField.x = _loc6_ + _loc26_;
  1407.          textField.y = _loc7_ + _loc27_;
  1408.          if(mx_internal::currentIcon)
  1409.          {
  1410.             _loc10_ += _loc26_;
  1411.             _loc11_ += _loc27_;
  1412.             (_loc29_ = new MoveEvent(MoveEvent.MOVE)).oldX = mx_internal::currentIcon.x;
  1413.             _loc29_.oldY = mx_internal::currentIcon.y;
  1414.             mx_internal::currentIcon.x = Math.round(_loc10_);
  1415.             mx_internal::currentIcon.y = Math.round(_loc11_);
  1416.             mx_internal::currentIcon.dispatchEvent(_loc29_);
  1417.          }
  1418.          if(mx_internal::currentSkin)
  1419.          {
  1420.             setChildIndex(DisplayObject(mx_internal::currentSkin),numChildren - 1);
  1421.          }
  1422.          if(mx_internal::currentIcon)
  1423.          {
  1424.             setChildIndex(DisplayObject(mx_internal::currentIcon),numChildren - 1);
  1425.          }
  1426.          if(textField)
  1427.          {
  1428.             setChildIndex(DisplayObject(textField),numChildren - 1);
  1429.          }
  1430.       }
  1431.       
  1432.       private function systemManager_mouseUpHandler(param1:MouseEvent) : void
  1433.       {
  1434.          if(contains(DisplayObject(param1.target)))
  1435.          {
  1436.             return;
  1437.          }
  1438.          phase = ButtonPhase.UP;
  1439.          buttonReleased();
  1440.          param1.updateAfterEvent();
  1441.       }
  1442.       
  1443.       public function set label(param1:String) : void
  1444.       {
  1445.          labelSet = true;
  1446.          if(_label != param1)
  1447.          {
  1448.             _label = param1;
  1449.             labelChanged = true;
  1450.             invalidateSize();
  1451.             invalidateDisplayList();
  1452.             dispatchEvent(new Event("labelChanged"));
  1453.          }
  1454.       }
  1455.       
  1456.       override protected function updateDisplayList(param1:Number, param2:Number) : void
  1457.       {
  1458.          var _loc5_:IFlexDisplayObject = null;
  1459.          var _loc6_:Boolean = false;
  1460.          super.updateDisplayList(param1,param2);
  1461.          if(emphasizedChanged)
  1462.          {
  1463.             changeSkins();
  1464.             emphasizedChanged = false;
  1465.          }
  1466.          var _loc3_:int = skins.length;
  1467.          var _loc4_:int = 0;
  1468.          while(_loc4_ < _loc3_)
  1469.          {
  1470.             (_loc5_ = IFlexDisplayObject(skins[_loc4_])).setActualSize(param1,param2);
  1471.             _loc4_++;
  1472.          }
  1473.          viewSkin();
  1474.          viewIcon();
  1475.          layoutContents(param1,param2,mx_internal::phase == ButtonPhase.DOWN);
  1476.          if(oldUnscaledWidth > param1 || textField.text != label || labelChanged || styleChangedFlag)
  1477.          {
  1478.             textField.text = label;
  1479.             _loc6_ = textField.truncateToFit();
  1480.             if(!toolTipSet)
  1481.             {
  1482.                if(_loc6_)
  1483.                {
  1484.                   super.toolTip = label;
  1485.                }
  1486.                else
  1487.                {
  1488.                   super.toolTip = null;
  1489.                }
  1490.             }
  1491.             styleChangedFlag = false;
  1492.             labelChanged = false;
  1493.          }
  1494.          oldUnscaledWidth = param1;
  1495.       }
  1496.       
  1497.       private function stage_mouseLeaveHandler(param1:Event) : void
  1498.       {
  1499.          phase = ButtonPhase.UP;
  1500.          buttonReleased();
  1501.       }
  1502.       
  1503.       public function set listData(param1:BaseListData) : void
  1504.       {
  1505.          _listData = param1;
  1506.       }
  1507.    }
  1508. }
  1509.